local 技能学习 = 多开数据[多开数据.当前].__UI界面.窗口层:创建我的窗口("技能学习",0,0,773,502)
local 当前 = 多开数据.当前
local function 取门派基础技能(门派,角色信息)
    local 门派基础技能 = ""
    if 门派 == "大唐官府" then
      门派基础技能 = "为官之道"
    elseif 门派 == "方寸山" then
      门派基础技能 = "黄庭经"
    elseif 门派 == "化生寺" then
      门派基础技能 = "小乘佛法"
    elseif 门派 == "女儿村" then
      门派基础技能 = "毒经"
    elseif 门派 == "阴曹地府" then
      门派基础技能 = "灵通术"
    elseif 门派 == "魔王寨" then
      门派基础技能 = "牛逼神功"
    elseif 门派 == "狮驼岭" then
      门派基础技能 = "魔兽神功"
    elseif 门派 == "盘丝洞" then
      门派基础技能 = "蛛丝阵法"
    elseif 门派 == "天宫" then
      门派基础技能 = "天罡气"
    elseif 门派 == "五庄观" then
      门派基础技能 = "周易学"
    elseif 门派 == "龙宫" then
      门派基础技能 = "九龙诀"
    elseif 门派 == "普陀山" then
      门派基础技能 = "金刚经"
    elseif 门派 == "神木林" then
      门派基础技能 = "瞬息万变"
    elseif 门派 == "凌波城" then
      门派基础技能 = "天地无极"
    elseif 门派 == "无底洞" then
      门派基础技能 = "枯骨心法"
	elseif 门派 == "花果山" then
        门派基础技能 = "神通广大"
    elseif 门派 == "九黎城" then
        门派基础技能 = "九黎战歌"    
    end
    for i=1,#角色信息.师门技能 do
        if 角色信息.师门技能[i].名称 == 门派基础技能 then
          return {编号=i,基础技能=角色信息.师门技能[i].名称}
        end
    end
end

function 技能学习:初始化()
    __置窗口坐标(self)
    local nsf = require('SDL.图像')(773,502)
    if nsf:渲染开始() then
        置窗口背景("技能学习",0,12,765,490,true):显示(0,0)
        取白色背景(0,0,295,433,true):显示(20,50)
        取白色背景(0,0,410,100,true):显示(320,50)
        local lssj = 取输入背景(0,0,124,23)
        字体18:置颜色(__取颜色('黑色'))
        for _, v in ipairs{
            {name = '技能' , x = 89 , y = 58},
            {name = '等级' , x = 238 , y = 58},
            {name = '相关法术' , x = 498 , y = 159 , colour = '白色' },
            {name = '可用经验' , x = 325 , y = 357 , input = true},
            {name = '所需经验' , x = 540 , y = 357 , input = true},
            {name = '可用金钱' , x = 325 , y = 388 , input = true},
            {name = '所需金钱' , x = 540 , y = 388 , input = true},
            {name = '存  款' , x =  325, y = 419 , input = true},
            {name = '储 备 金' , x = 540 , y = 419 , input = true},
        }do
            if v.colour then
                字体18:置颜色(__取颜色(v.colour))
            end
            -- print(v.name)
            字体18:取图像(v.name):显示(v.x,v.y)
            if v.input then
                lssj:显示(v.x+85,v.y-2)
            end
        end
        nsf:渲染结束()
    end
    self:置精灵(nsf:到精灵())
end

function 技能学习:重置(level)
    local nsf = require('SDL.图像')(430,100)
    if nsf:渲染开始() then
        字体18:置颜色(__取颜色('黑色'))
        for _, v in ipairs{
            {name = '可用经验' , dy = '当前经验' , x = 103 , y = 22 , input = true},
            {name = '所需经验' , x = 318 , y = 22 , input = true},
            {name = '可用金钱' , dy = '银子' , x = 103 , y = 52 , input = true},
            {name = '所需金钱' , x = 318 , y = 52 , input = true},
            {name = '存  款' , dy = '存银'  , x =  103, y = 84 , input = true},
            {name = '储 备 金' , dy = '储备'  , x = 318 , y = 84 , input = true},
        }do
            if level then
                if v.name == '所需经验' then
                    字体18:取图像((自定义系统.mpjnxh[level+1] or {}).消耗经验 or 0):显示(v.x,v.y)
                elseif v.name == '所需金钱' then
                    字体18:取图像((自定义系统.mpjnxh[level+1] or {}).消耗金钱 or 0):显示(v.x,v.y)
                else
                    字体18:取图像(多开数据[当前].角色信息[v.dy]):显示(v.x,v.y)
                end
            else
                if v.name == '所需经验' then
                    字体18:取图像(0):显示(v.x,v.y)
                elseif v.name == '所需金钱' then
                    字体18:取图像(0):显示(v.x,v.y)
                else
                    字体18:取图像(多开数据[当前].角色信息[v.dy]):显示(v.x,v.y)
                end
            end
        end
        nsf:渲染结束()
    end
    self.图像 = nsf:到精灵()
    self.图像:置中心(-317,-338)
end

function 技能学习:打开()
    if 多开数据[当前].角色信息.门派 == "无门派" then
       多开数据[当前].__UI弹出.提示框:打开("#Y/拜入门派才可以学习师门技能")
        return false
    end
    self:置可见(true)
    self.技能列表:重置()
    self:重置()
    自定义系统处理("mpjnxh")
    self.选中 = nil
end

local 关闭 = 技能学习:创建我的按钮(__res:getPNGCC(1,401,0,46,46),"关闭",723,0)

function 关闭:左键弹起(x,y,msg)
    技能学习:置可见(false)
    技能学习.技能文本:清空()
    技能学习.包含网格:重置({})
end

local 技能文本 = 技能学习:创建我的文本("技能文本",345,60,384,88,true)

local 技能列表 = 技能学习:创建列表("技能列表",22,86,292,350)

function 技能列表:初始化()
    self:置文字(字体20)
    self.行高度 = 50
    self.行间距 = 0
end

function 技能列表:重置()
    local tbsj = {}
    self:清空()
    for _, v in ipairs(多开数据[当前].角色信息.师门技能) do
        local nsf = require('SDL.图像')(292,50)
        if nsf:渲染开始() then
            local skill = 取技能信息(v.名称)
            __res:取图像(__res:取地址('shape/jn/',skill[8])):拉伸(30,30):显示(11,10)
            字体16:置颜色(__取颜色('浅黑'))
            字体16:取图像(v.名称):显示(54,15)
            字体16:取图像(v.等级..'/180'):显示(200,15)
            nsf:渲染结束()
        end
        local r = self:添加()
        r:置精灵(nsf:到精灵())
    end
end

function 技能列表:左键弹起(x, y, i, item, msg)
    local skill = 取技能信息(多开数据[当前].角色信息.师门技能[i].名称)
    技能文本:清空()
    技能文本:置文本('#G'..多开数据[当前].角色信息.师门技能[i].名称)
    技能文本:置文本('#K'..(skill[1] or '无效果'))
    技能学习.包含网格:重置(多开数据[当前].角色信息.师门技能[i].包含技能)
    技能学习:重置(多开数据[当前].角色信息.师门技能[i].等级)
    技能学习.选中 = i
end

local 学习 = 技能学习:创建我的按钮(__res:getPNGCC(3,2,507,124,41,true):拉伸(123,41),'学习',475,450,'学习')
function 学习:左键弹起(x,y,msg)
    if 技能学习.选中 and 多开数据[当前].角色信息.师门技能[技能学习.选中].等级 < 180 and 自定义系统.mpjnxh[多开数据[当前].角色信息.师门技能[技能学习.选中].等级+1] then
        local lssj = 自定义系统.mpjnxh[多开数据[当前].角色信息.师门技能[技能学习.选中].等级+1]
        local allow = false
        local 门派基础技能 = 取门派基础技能(多开数据[当前].角色信息.门派,多开数据[当前].角色信息)
        if 多开数据[当前].角色信息.当前经验 >= lssj.消耗经验 then
            if 多开数据[当前].角色信息.师门技能[技能学习.选中].等级 >= 多开数据[当前].角色信息.等级 + 10 then
               多开数据[当前].__UI弹出.提示框:打开("#Y师门技能不能超过角色等级+10")
                return
            elseif 技能学习.选中 ~= 门派基础技能.编号 and 多开数据[当前].角色信息.师门技能[技能学习.选中].等级>=多开数据[当前].角色信息.师门技能[门派基础技能.编号].等级 and 编号 ~= 门派基础技能.编号 then
               多开数据[当前].__UI弹出.提示框:打开("#Y请先提升门派基础技能"..门派基础技能.基础技能)
                return
            end
            if 多开数据[当前].角色信息.储备 >= lssj.消耗金钱 then
                多开数据[当前].角色信息.储备 = 多开数据[当前].角色信息.储备 - lssj.消耗金钱
                allow = true
            elseif 多开数据[当前].角色信息.银子 >= lssj.消耗金钱 then
                多开数据[当前].角色信息.银子 = 多开数据[当前].角色信息.银子 - lssj.消耗金钱
                allow = true
            elseif 多开数据[当前].角色信息.储备 + 多开数据[当前].角色信息.银子 >= lssj.消耗金钱 then
                lssj.消耗金钱 = lssj.消耗金钱 - 多开数据[当前].角色信息.储备
                多开数据[当前].角色信息.储备 = 0
                多开数据[当前].角色信息.银子 = 多开数据[当前].角色信息.银子 - lssj.消耗金钱
                allow = true
            elseif 多开数据[当前].角色信息.储备 + 多开数据[当前].角色信息.银子 + 多开数据[当前].角色信息.存银 >= lssj.消耗金钱 then
                lssj.消耗金钱 = lssj.消耗金钱 - 多开数据[当前].角色信息.储备 - 多开数据[当前].角色信息.银子
                多开数据[当前].角色信息.储备 = 0
                多开数据[当前].角色信息.银子 = 0
                多开数据[当前].角色信息.存银 = 多开数据[当前].角色信息.存银 - lssj.消耗金钱
                allow = true
            end
            if allow then
                多开数据[当前].角色信息.师门技能[技能学习.选中].等级 = 多开数据[当前].角色信息.师门技能[技能学习.选中].等级 + 1
                local nsf = require('SDL.图像')(292,50)
                if nsf:渲染开始() then
                    local skill = 取技能信息( 多开数据[当前].角色信息.师门技能[技能学习.选中].名称)
                    __res:取图像(__res:取地址('shape/jn/',skill[8])):拉伸(30,30):显示(11,10)
                    字体16:置颜色(__取颜色('浅黑'))
                    字体16:取图像( 多开数据[当前].角色信息.师门技能[技能学习.选中].名称):显示(54,15)
                    字体16:取图像( 多开数据[当前].角色信息.师门技能[技能学习.选中].等级..'/180'):显示(200,15)
                    nsf:渲染结束()
                end
                技能学习.技能列表.子控件[技能学习.选中]:置精灵(nsf:到精灵())
                技能学习:重置(多开数据[当前].角色信息.师门技能[技能学习.选中].等级)
                发送数据(当前,3711,{序列=技能学习.选中,次数 = 1})
            else
                多开数据[当前].__UI弹出.提示框:打开("#Y你的银子或经验不够哟")
                return
            end
        end 
    end
end

local 包含网格 = 技能学习:创建我的网格('包含网格',338,190,403,140,198,64,8,8,8,2,true)

function 包含网格:重置(data)
    for _,v in ipairs(self.子控件) do
        if data[_] then
            local nsf = require('SDL.图像')(198,64)
            if nsf:渲染开始() then
                local skill = 取技能信息(data[_].名称)
                __res:getPNGCC(3,997,1047,178,64):拉伸(198,64):显示(0,0)
                __res:取图像(__res:取地址('shape/jn/',skill[7])):拉伸(40,40):显示(11,10)
                字体16:置颜色(__取颜色('浅黑'))
                字体16:取图像(data[_].名称):显示(63,24)
                nsf:渲染结束()
            end
            v:置精灵(nsf:到精灵())
        else
            v:置精灵()
        end
    end
end